import org.antlr.v4.runtime.CharStreams;
import org.antlr.v4.runtime.CommonTokenStream;
import org.junit.Test;
import 抽象语法树遍历器.*;

import java.io.IOException;
import java.net.URISyntaxException;

public class 测试 {

    @Test
    public void 测试定义符号()  throws IOException, URISyntaxException{
        
        // 1. 构造抽象语法树
        var 源码 = Tools.读文件(Tools.getResourcePath("测试.pie"));
        var input = CharStreams.fromString(源码);
        var lexer = new PieLexer(input);// 词法分析器，将输入文本转换为词法符号
        var tokens = new CommonTokenStream(lexer);// 词法符号流
        var parser = new PieParser(tokens);// 语法分析器
        var 树 = new 语法树访问器().visit(parser.program());
        
        // 2. 设置父节点
        var 遍历器 = new 抽象语法树遍历器();
        遍历器.遍历(new 父节点监听器(), 树);
        
        // 3. 定义符号
        遍历器.遍历(new 符号定义器(), 树);
    }
    
}
